Memory cards have been developed, which can be connected to different electronic devices for storing data and for using the stored data. Memory cards of this type typically comprise a semiconductor memory, where there are several memory locations that can be addressed. Each memory location typically comprises a specific number of bits, such as 8 bits (a byte), 16 bits (a word), 32 bits (a double-word), or even 64 bits. Thus the amount of data that can be addressed with one piece of address data is the amount of bits in the memory location in question.
Memory cards are known, where data can be transferred between the memory card and an external device block by block, i.e. as assemblies of several memory locations. The size of this type of a block is e.g. 512 or 1024 bytes, or the size of the block can be selected between minimum and maximum values, e.g. 1 to 2048 bytes/block. Thus, the device to which the memory card is connected performs the transfer of data between the device and the memory card block by block. On the basis of the address of the memory location, it is determined in the memory card which block the byte (or bytes) being handled are located in. After this, the transfer of the block in question is performed.
It is also possible to use another memory besides the semiconductor memory with the memory cards. For example, fixed disks can nowadays be manufactured in such a small size that they can be placed in a memory card.
In the planning phase of memory cards, the rapid development of memory technology has not been previously prepared for, in which case in some memory card standards an upper limit has been set for the number of memory locations included in a memory card. Since the development of semiconductor memories and other memory techniques as well has made it possible to substantially reduce the area required for storing one bit, the amount of memory that can be fitted into a memory card is nowadays already larger than the upper limit determined by many standards. An example of this type of a memory card standard is MultiMediaCard, where the upper limit is set as 4 gigabytes. Therefore, a problem may arise of, e.g. how the memory space of the entire memory card can be handled. For example, in order to address the memory locations of a memory card according to the specifications of said MultiMediaCard, there are 32 bits that can be used, with which a maximum of 4 gigabytes of memory space can be addressed. The memory locations exceeding this limit cannot be addressed with a memory card according to the MultiMediaCard specifications when using the solutions according to the prior art.
The maximum memory capacity of the memory card according to the MultiMediaCard specifications is especially limited by the fact that data on the memory capacity of the memory card is coded in the memory card. The memory capacity is calculated by multiplying the number of blocks with the length of the block. The number of blocks (BLOCKNR) can be determined by reading the parameters C_SIZE and C_SIZE_MULT stored in the memory, as well as by performing the calculation:BLOCKNR=(C_SIZE+1)*2C—SIZE—MULT+2   (1)Correspondingly, the length of the block (BLOCK_LEN) is determined by means of the parameter READ_BL_LEN in the following way:BLOCK_LEN=2READ—BL—LEN   (2)
According to the present specification, 12 bits are reserved for the parameter C_SIZE, in which case the maximum value is 4095. Three bits are reserved for the parameter C_SIZE_MULT, while the maximum value is thus 7. Four bits are reserved for the parameter READ_BL_LEN, and therefore the maximum value is 16. However, from the 4-bit values of the parameter READ_BL_LEN, only the values 0 to 11 are in use. On the basis of the above, the maximum capacity that can be calculated by means of the parameters is((4095+1)*(2(7+2)))*(211)=4096*512*2048=4294967296bytes i.e. 4 gigabytes (4 GB).